#ifndef __CURVEDARA_H_
#define __CURVEDARA_H_

#include "sw_type.h"

#if 0
#define FONT_NONE              	"\033[m"			// 取消所有设置，恢复默认   "\033[0m"
#define FONT_GREEN             	"\033[0;32m" 		// 绿色字体
#define FONT_WHITE              "\033[0;37m" 		// 白色字体
#define FONT_YELLOW             "\033[1;33m" 		// 黄色字体
#define FONT_RED                "\033[1;31m" 		// 红色字体
#endif

/* 镜头App 曲线参数*/
typedef struct
{
    SW_UINT8 PointNum;           	// 曲线点数
    SW_INT16 ZoomPI;             	// ZOOM PI 位置
    SW_INT16 FocusPI;            	// FOCUS PI 位置
	SW_INT16 *ZoomSection;  	    // ZOOM分段
	SW_INT16 *CurveOffsetUpper; 	// 曲线上偏值
	SW_INT16 *CurveOffsetLower; 	// 曲线下偏值
	SW_INT16 *IROffsetUpper; 		// 红外曲线上偏值
	SW_INT16 *IROffsetLower; 		// 红外曲线下偏值
}LensParamDef;
extern LensParamDef LensParamInfo;

typedef struct
{
    
SW_INT16 *Curve1M5;   // 镜头
    
SW_INT16 *Curve03M;
    
SW_INT16 *Curve06M;
    
SW_INT16 *Curve10M;
    
SW_INT16 *Curve20M;
    
SW_INT16 *CurveINF;
}LensCurveDef;
extern LensCurveDef LensCurveInfo;

/* 曲线测试相关设备类型 */
typedef enum{

    IPZOOMDEV = 0,  // 机芯设备
    IPCAMDEV,       // IPC 设备
}JX_DevType;

/* 电机类型枚举 */
typedef enum{
    MOTOR_ZOOM = 0,     // ZOOM 电机
    MOTOR_FOCUS,        // FOCUS 电机
    MOTOR_ZOOMFOCUS,    // ZOOM FOCUS电机
}JX_MotorType;

/* FALSH 存储类型 */
typedef enum{
	NO_STOR = 0, //不需要曲线
	STOR_NORMAL_FLASH, //机芯和IPC新镜头用flash
	STOR_NORMAL_MCU, //IPC新镜头用MCU
	STOR_OLD_LENS_FLASH, //IPC老镜头用flash 为了兼容ZF1-ZF4
	STOR_OLD_LENS_MCU, //IPC老镜头用MCU   为了兼容ZF1-ZF4
	STOR_SPI_FLASH, //spi flash
}JX_StorType;
#if 0
/* FALSH 曲线数据分区配置 */
typedef struct
{

    // 曲线存储设备节点
    SW_CHAR* 	CURVE_DEVICE_NODE;
    // 曲线存储偏移地址
    SW_UINT32 	CURVE_START_ADDR;
    // 曲线存储长度
    SW_UINT32 	CURVE_LENGTH;
    // 数据存储头
    SW_UINT32 	DATA_FLAG_HEARD;
    // 数据存储尾
    SW_UINT32 	DATA_FLAG_END;
}FLASH_CONFIG;
#endif

/* 函数指针结构体 */
typedef struct
{
    /* 平台相关控制 */
    SW_INT32 			(*pInitJxThread)			(void);
    SW_INT 				(*pGetLensType)				(void);
    SW_INT32 			(*pLensParamLoad)			(void);
    void 				(*pCurvePointer)			(void);
    
    /* 走电机相关 */
    SW_INT32 			(*pGotoZoomFocusPos)		(SW_INT, SW_INT);
    SW_INT32 			(*pGotoZoomPos)				(SW_INT, SW_INT);
    SW_INT32 			(*pGotoFocusPos)			(SW_INT, SW_INT);
    SW_INT	 			(*pGetZoomPos)				(void);
    SW_INT	 			(*pGetFocusPos)				(void);
    SW_INT32 			(*pStepMotorInit)			(void);
    
    
    /* 曝光控制相关 */
    SW_BOOL 			(*pGetSupportIris)			(void);
    SW_INT16 			(*pGetMinIRIS)				(void);
    SW_INT16 			(*pGetMaxIRIS)				(void);
    SW_INT	 			(*pSetIRISValue)			(SW_INT16);
    SW_INT16 			(*pGetCurIRIS)				(void);
    SW_INT	 			(*pWaitAeFinish)			(void);
    
    /* 聚焦控制相关 */
    SW_INT	 			(*pWaitAfFinish)			(void);

    /* FALSH 曲线数据存储相关 */
    SW_INT				(*pReadFlash)				(const SW_CHAR *, const SW_CHAR *, SW_INT16 *, SW_UINT32);
    SW_INT				(*pWriteFlash)				(const SW_CHAR *, const SW_CHAR *, const SW_INT16 *, SW_UINT32);
    SW_RET 				(*pReadIni)					(const SW_CHAR *, const SW_CHAR *, SW_INT16 *);
    /* 多马达相关 */
//    SW_UINT8				(*pGetMotorType)			(SW_UINT8);
//    SW_INT32				(*pMultMotorFocusCheck)		(SW_UINT8, SW_INT16*, SW_INT16*);
}CURVE_FCStu;
extern CURVE_FCStu CurveFC;

#endif



